﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyBanHang.DAL;
using QuanLyBanHang.OBJECT;
using System.Drawing.Imaging;

namespace QuanLyBanHang
{
    public partial class frmCapNhatHangHoa : Form
    {
        public frmCapNhatHangHoa()
        {
            InitializeComponent();
        }
        private DataGridView dgv = null;
        private frmHangHoa hh = null;
        public frmCapNhatHangHoa(DataGridView fdgv, frmHangHoa fhh)
        {
            dgv = fdgv;
            hh = fhh;
            InitializeComponent();
        }
        public static int Action;
        private void LoadData()
        {
            cboDVT.DataSource = DalDonViTinh.LoadUnit();
            cboDVT.DisplayMember = "TenDVT";
            cboDVT.ValueMember = "MaDVT";
            cboKho.DataSource = DalKhoHang.LoadWareHouse();
            cboKho.DisplayMember = "TenKho";
            cboKho.ValueMember = "MaKho";
            cboMaLH.DataSource = DalLoaiHang.LoadCategory();
            cboMaLH.DisplayMember = "Ten";
            cboMaLH.ValueMember = "MaLH";
            cboNCC.DataSource = DalNhaCungCap.LoadSupplier();
            cboNCC.DisplayMember = "Ten";
            cboNCC.ValueMember = "MaNCC";
        }
        private string GetID()
        {
            List<string> list = new List<string>();
            DataTable dt = DalHangHoa.GetID();
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                list.Add(dt.Rows[0][0].ToString());
            }
            
            Random rd = new Random();
            double a = rd.NextDouble() * 10000000000000;
            string MaHang = Math.Round(a, 0).ToString();
            while (list.Contains(MaHang))
            {
                a = rd.NextDouble() * 10000000000000;
                MaHang = Math.Round(a, 0).ToString();
            }
            return MaHang;
             
        }
        private void frmCapNhatHangHoa_Load(object sender, EventArgs e)
        {
            LoadData();
            if (Action == 1)
            {
                this.Text = "Thêm hàng hóa mới";
                txtMa.Text = GetID();
            }
            else if (Action == 2)
            {
                this.Text = "Cập nhật thông tin hàng hóa";
                PicHH.Image = (Image)dgv.CurrentRow.Cells[0].Value;
                txtMa.Text = dgv.CurrentRow.Cells[1].Value.ToString();
                txtTen.Text = dgv.CurrentRow.Cells[2].Value.ToString();
                nudGB.Value = Convert.ToDecimal(dgv.CurrentRow.Cells[3].Value);
                dtpNSX.Value = Convert.ToDateTime(dgv.CurrentRow.Cells[4].Value.ToString());
                dtpHSD.Value = Convert.ToDateTime(dgv.CurrentRow.Cells[5].Value.ToString());
                nudSL.Value = Convert.ToDecimal(dgv.CurrentRow.Cells[6].Value.ToString());
                nudGN.Value = Convert.ToDecimal(dgv.CurrentRow.Cells[7].Value.ToString());
                txtGC.Text = dgv.CurrentRow.Cells[8].Value.ToString();
                cboMaLH.SelectedValue = dgv.CurrentRow.Cells[9].Value.ToString();
                cboNCC.SelectedValue = dgv.CurrentRow.Cells[10].Value.ToString();
                cboKho.SelectedValue = dgv.CurrentRow.Cells[11].Value.ToString();
                cboDVT.SelectedValue = dgv.CurrentRow.Cells[12].Value.ToString();
            }         
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (PicHH.Image == null)
            {
                PicHH.Image = Properties.Resources._default;
            }

            if (CheckNull() != "")
                MessageBox.Show(CheckNull(),"Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            else if (!CheckDate(dtpNSX.Value,dtpHSD.Value))
                return;
            else
            {
                if (Action == 1)
                {

                    ObjHangHoa obj = new ObjHangHoa(txtMa.Text, txtTen.Text, Convert.ToDouble(nudGN.Value), Convert.ToDouble(nudGB.Value),
                        dtpNSX.Value.ToString("MM/dd/yyyy"), dtpHSD.Value.ToString("MM/dd/yyyy"), Convert.ToInt32(nudSL.Value),
                        txtMa.Text + ".jpg", txtGC.Text, cboMaLH.SelectedValue.ToString(), cboNCC.SelectedValue.ToString(),
                        cboKho.SelectedValue.ToString(), cboDVT.SelectedValue.ToString(), "True");
                    int thucthi = DalHangHoa.InsertProducts(obj);
                    if (thucthi > 0)
                    {
                        PicHH.Image.Save("images\\hanghoa\\" + txtMa.Text + ".jpg", ImageFormat.Jpeg);
                        MessageBox.Show("Mặt hàng: " + txtTen.Text.ToUpper() + " đã được thêm vào CSDL thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        hh.LoadData();
                        this.Close();
                    }
                    else
                        MessageBox.Show("Mặt hàng: " + txtMa.Text.ToUpper() + " chưa được thêm vào CSDL", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
                else
                {

                    ObjHangHoa obj = new ObjHangHoa(txtMa.Text, txtTen.Text, Convert.ToDouble(nudGN.Value), Convert.ToDouble(nudGB.Value),
                        dtpNSX.Value.ToString("MM/dd/yyyy"), dtpHSD.Value.ToString("MM/dd/yyyy"), Convert.ToInt32(nudSL.Value),
                        txtMa.Text + ".jpg", txtGC.Text, cboMaLH.SelectedValue.ToString(), cboNCC.SelectedValue.ToString(),
                        cboKho.SelectedValue.ToString(), cboDVT.SelectedValue.ToString(), "True");
                    int thucthi = DalHangHoa.UpdateProducts(obj);
                    if (thucthi > 0)
                    {
                        string img = @"images\hanghoa\" + txtMa.Text + ".jpg";
                        PicHH.Image.Save(img, ImageFormat.Jpeg);
                        MessageBox.Show("Mặt hàng: " + txtTen.Text.ToUpper() + " đã được sửa thông tin thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        hh.LoadData();
                        this.Close();
                    }
                    else
                        MessageBox.Show("Mặt hàng: " + txtMa.Text.ToUpper() + " chưa được sửa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }
        private void btnTim_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.Filter = "JPEG File (*.jpg) |*.jpg";
            op.Title = "Tìm ảnh hàng hóa";
            if (op.ShowDialog() == DialogResult.OK)
            {
                PicHH.ImageLocation = op.FileName;
            }
        }
        private string CheckNull()
        {
            object[] obj = { txtTen };
            string error = "";
            foreach (Control item in obj)
            {
                if (item.Text =="")
                    error += "Bạn chưa nhập: " + item.Tag.ToString().ToUpper()+"."+'\n';
            }
            return error;
        }
        private bool CheckDate(DateTime ngaysx, DateTime hansd)
        {
            if (ngaysx > hansd)
            {
                MessageBox.Show("Hạn sử dụng không được nhỏ hơn ngày sản xuất");
                return false;
            }
            else if (ngaysx > DateTime.Now)
            {
                MessageBox.Show("Ngày sản xuất không thể lớn hơn hiện tại");
                return false;
            }
            return true;
        }
    }
}
